package senior.demo4;

public class BaoZhuang {
    public void method1() {
        Integer i = new Integer(1);
        Integer j = new Integer(1);
        System.out.println(i == j);  // 实例对象执行的地址不一样，所有不相同

        Integer m = 1;
        Integer n = 1;
        System.out.println(m == n);
        // 相同 因为装箱的缓存机制，会自动将-128 - 127的数字缓存,n在创建的时候，不会创建一个新的1，而是返回原来的1，类似于复制
        // 所以这两个1的引用地址是相同的，

        Integer x = 128;
        Integer y = 128;
        System.out.println(x == y);//
    }
    public static void main(String[] args) {
        // 装箱
        // 将基本数据类型的值转为包装类对象
        Integer obj1 = Integer.valueOf(4);
        // 拆箱
        // 将包装类对象转成基本数据类型的值
        int number1 = obj1.intValue();
        // valueOf 装箱  intValue 拆箱
        System.out.println(number1);

        // 自动装箱
        Integer obj2 = 100;
        // 自动拆箱
        obj2 = obj2 + 5;
        System.out.println(obj2);

        // 基本数据类型转为字符串
        // 将a装成字符串包装类型，然后定义一个字符串变量接收
        int a = 10000;
        String name = String.valueOf(a);
        System.out.println(name instanceof String);

        // 将字符串转回基本数据类型的值
        // 用parseXXX就能将字符串转回基本数据类型

        int b = Integer.parseInt(name);
        System.out.println(b);

        // 因为int和double在进行比较的时候，会被提升，因此int会被转成double，所有结果是1.0
        Object o1 = true ? Integer.valueOf(1) : Double.valueOf(2.0);
        System.out.println(o1); // 1.0

        // 缓存机制，包装类会缓存-128-127的数字


    }
}
